using System.Text;
using PhraseCorrector.Init;

namespace PhraseCorrector.SimplePinyin
{
    /// <summary>
    /// 将繁体字转换为简体字。
    /// </summary>
    internal class Q2B
    {

        // ///////////////////////////////////////////////////////////////////////////////
        /// <summary>
        /// 将字符转换为特定字符串
        /// </summary>
        /// <param name="c">待转换的字符</param>
        /// <returns>如果字符存在于资源映射中，则返回对应的字符串；否则返回原始字符的字符串表示</returns>
        public static string TransformChar(char c)
        {
            // 尝试从嵌入资源的映射中查找字符对应的字符串
            return EmbeddedResources.Q2b.TryGetValue(c.ToString(), out string value) ? value : c.ToString();
        }

        // ///////////////////////////////////////////////////////////////////////////////
        /// <summary>
        /// 公共方法，用于转换字符串中的每个字符
        /// </summary>
        /// <param name="text">需要转换的字符串</param>
        /// <returns>转换后的字符串</returns>
        public static string Transform(string text)
        {
            // 调用私有静态方法Transform，使用新的StringBuilder实例来累积结果
            return Transform(text, new StringBuilder());
        }

        // ///////////////////////////////////////////////////////////////////////////////
        /// <summary>
        /// 私有方法，实际执行字符转换操作
        /// </summary>
        /// <param name="text">需要转换的字符串</param>
        /// <param name="sb">用于累积转换后字符的StringBuilder实例</param>
        /// <returns>转换后的字符串</returns>
        private static string Transform(string text, StringBuilder sb)
        {
            // 遍历字符串中的每个字符，并将其转换后的结果累积到StringBuilder实例中
            foreach (char c in text)
                sb.Append(TransformChar(c));

            // 将StringBuilder实例中的内容转换为字符串并返回
            return sb.ToString();
        }
    }
}
